#!/usr/bin/env python
# -*- coding: UTF-8 -*-
"""
@Project ：data_reader 
@File ：data_reader.py
@IDE  ：PyCharm 
@Author ：李涵彬
@Date ：2024/3/19 15:37 
"""

import pandas as pd


class DatabaseReader:
	def read_data(self, data_source):
		# 实现数据库读取逻辑，返回数据
		# 在这里假设从数据库读取数据的具体实现代码
		# 这里只是简单示例，您需要根据实际情况进行更改
		# 这里返回一个DataFrame作为示例
		return pd.DataFrame({'Column1': [1, 2, 3], 'Column2': ['A', 'B', 'C']})


class ExcelReader:
	def read_data(self, data_source):
		# 实现Excel文件读取逻辑，返回数据
		# 在这里假设从Excel读取数据的具体实现代码
		# 这里只是简单示例，您需要根据实际情况进行更改
		# 这里返回一个DataFrame作为示例
		return pd.DataFrame({'Column1': [4, 5, 6], 'Column2': ['D', 'E', 'F']})


class CsvReader:
	def read_data(self, data_source):
		# 实现CSV文件读取逻辑，返回数据
		# 在这里假设从CSV读取数据的具体实现代码
		# 这里只是简单示例，您需要根据实际情况进行更改
		# 这里返回一个DataFrame作为示例
		return pd.DataFrame({'Column1': [7, 8, 9], 'Column2': ['G', 'H', 'I']})


class TxtReader:
	def read_data(self, data_source):
		# 实现文本文件读取逻辑，返回数据
		# 在这里假设从文本文件读取数据的具体实现代码
		# 这里只是简单示例，您需要根据实际情况进行更改
		# 这里返回一个DataFrame作为示例
		return pd.DataFrame({'Column1': [10, 11, 12], 'Column2': ['J', 'K', 'L']})


class DataReader:
	def __init__(self, data_source):
		self.data_source = data_source
		self.data_reader = None

	def set_data_reader(self, data_reader):
		self.data_reader = data_reader

	def read_data(self):
		if not self.data_reader:
			raise ValueError("未设置有效的数据读取方式，请使用set_data_reader方法设置数据读取方式。")

		return self.data_reader.read_data(self.data_source)


# 使用示例
data_reader = DataReader("my_data.xlsx")

# 根据不同文件类型设置不同的数据读取方式
data_reader.set_data_reader(ExcelReader())
data = data_reader.read_data()
print(data)


# 扩展新的数据读取方式
class JsonReader:
	def read_data(self, data_source):
		# 实现JSON文件读取逻辑，返回数据
		# 在这里假设从JSON文件读取数据的具体实现代码
		# 这里只是简单示例，您需要根据实际情况进行更改
		# 这里返回一个DataFrame作为示例
		return pd.DataFrame({'Column1': [13, 14, 15], 'Column2': ['M', 'N', 'O']})


# 在需要时设置新的数据读取方式
data_reader.set_data_reader(JsonReader())
data = data_reader.read_data()
print(data)
